package main

import (
	"encoding/json"
	"fmt"
	"reflect"
	"strings"
)

func main() {
	const jsonStream = `
	{"Name": "Ed", "Text": "Knock knock."}
	{"Name": "Sam", "Text": "Who's there?"}
	{"Name": "Ed", "Text": "Go fmt."}
	{"Name": "Sam", "Text": "Go fmt who?"}
	{"Name": "Ed", "Text": "Go fmt yourself!"}
`
	type Message struct {
		Name, Text string
	}
	m := Message{}

	//json对象解码为struct对象
	dec := json.NewDecoder(strings.NewReader(jsonStream))
	// for {
	// 	// var m Message
	// 	if err := dec.Decode(&m); err == io.EOF {
	// 		break
	// 	} else if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	// fmt.Printf("%s: %s\n", m.Name, m.Text)
	// 	fmt.Println(m)
	// }

	dec.Decode(&m)
	fmt.Println(m, m.Name)
	fmt.Println(reflect.TypeOf(m), reflect.TypeOf(m.Name))

	// buffer := &bytes.Buffer{}
	// enc := json.NewEncoder(buffer)
	// enc.Encode(m)
	// fmt.Println(buffer.String())

	// var buf1 strings.Builder
	// enc := json.NewEncoder(io.MultiWriter(buf1))
}
